from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium自动化测试.element.his_seach_loctor import *
class Search:
    def __init__(self,driver,url):
        """
        :param driver: 传入驱动
        :param url: 打开的网页
        """
        self.driver = driver
        self.url = url
        # 前置准备
        self.driver.maximize_window()
        self.driver.implicitly_wait(15)
    def open_url(self):
        self.driver.get(self.url)
    def input_text(self,text):
        WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(input_text_element)).send_keys(text)
    def click_search_btn(self):
        buttons = WebDriverWait(self.driver, 10, 0.5).until(EC.presence_of_all_elements_located(click_search_btn_element))
        for i in buttons:
            if i.get_attribute(click_search_btn_sub_element[0]) == click_search_btn_sub_element[1]:  # 找到第一个符合的就结束
                i.click()
                break
    def click_one_a(self):
        WebDriverWait(self.driver, 10, 0.5).until(EC.presence_of_element_located(click_one_a_element)).click()
    def assert_text(self):
        self.driver.switch_to.window(self.driver.window_handles[-1])
        text = WebDriverWait(self.driver,10,0.5).until(EC.presence_of_element_located(assert_text_element)).text
        assert text == "毕节市第一人民医院高值医用耗材网上阳光平台议价意向公开"

if __name__ == '__main__':
    driver = webdriver.Chrome()
    s1 = Search(driver,"http://www.bjhospital.net/")
    # 打开url
    s1.open_url()
    # 输入搜索内容
    s1.input_text("骨科")
    # 点击搜索按钮
    s1.click_search_btn()
    # 点击第一个链接
    s1.click_one_a()
    # 断言文本内容
    s1.assert_text()

"""
组件化一：
封装了一个类，把driver、url当作实例属性去定义，每一个操作步骤封装成了一个函数

组件化二：
基于组件化一，我把元素解耦开，然后寻找元素的方式替换为webdriverwait显示等待，让代码更加健壮一点

组件化三：
基于组件化二，我把元素单独放到了一个element目录下，然后将新建loctor，把所有的元素放到这个py文件里面，用例这个文件导入loctor.py就可以
"""







